﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpSphinx.Util.Configuration;

namespace SharpSphinx.Linguist.Dictionary
{


    /// <summary>
    /// Provides a generic interface to a dictionary. The dictionary is responsible for determining how a word is pronounced.
    /// </summary>
    public interface IDictionary  : IConfigurable
    {




        /// <summary>
        /// Returns a Word object based on the spelling and its classification. The behavior of this method is also affected
        /// by the properties wordReplacement, allowMissingWords, and createMissingWords.
        /// </summary>
        /// <param name="text">the spelling of the word of interest.</param>
        /// <returns>a Word object</returns>
        Word getWord(String text);


        /// <summary>
        /// Returns the sentence start word.
        /// </summary>
        /// <returns>Returns the sentence start word.</returns>
         Word getSentenceStartWord();


        /// <summary>
        /// Returns the sentence end word.
        /// </summary>
        /// <returns>Returns the sentence end word.</returns>
        Word getSenteceEndWord();

        /// <summary>
        /// Returns the silence word.
        /// </summary>
        /// <returns></returns>
        Word getSilenceWord();

        /// <summary>
        /// Returns the set of all possible word classifications for this dictionary.
        /// </summary>
        /// <returns></returns>
         WordClassification[] getPossibleWordClassifications();

        /// <summary>
        /// Gets the set of all filler words in the dictionary
        /// </summary>
        /// <returns></returns>
        Word[] getFillerWords(); 


        /// <summary>
        /// Allocates the dictionary
        /// </summary>
         void Allocate();
       
        /// <summary>
        /// Deallocates the dictionary
        /// </summary>
         void Delalocate(); 

        



    }
}
